package edu.gdpu.bytecode;

/**
 * @author mazebin
 * @date 2021年 07月09日 15:59:32
 */
public class IPlusPlusAndPlusPlusITest {
    public static void main(String[] args) {
        int i=1;
     //   i=++i;//2
        i=i++;//1

        System.out.println(i);
    }
    /**
     * ++i的字节码
     *  Code:
     *       stack=2, locals=2, args_size=1
     *          0: iconst_1  //将int型的值为1的数据推送至栈顶
     *          1: istore_1   //将int类型值存入局部变量1
     *          2: iinc        //把一个常量值加到一个局部变量上  1, 1
     *          5: iload_1      //从局部变量1中加载Int类型的值
     *          6: istore_1      //将int类型值存入局部变量1
     *          7: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStr
     * eam;
     *         10: iload_1         //从局部变量1中装载int类型值
     *         11: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
     *         14: return
     */
    //区别：两者间的差别：在于iinc和iload_1指令的执行顺序

    /**
     * i++的字节码
     *    Code:
     *       stack=2, locals=2, args_size=1
     *          0: iconst_1
     *          1: istore_1
     *          2: iload_1
     *          3: iinc          1, 1
     *          6: istore_1
     *          7: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
     *         10: iload_1
     *         11: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
     *         14: return
     */
}
